//在user.js创建路由器对象，添加用户注册的路由(/reg)，响应{code:200,msg:'注册成功'},将路由器对象暴露出去
//引入express模块
const express=require('express')


//引入连接池模块
const pool=require('../pool.js')

//创建路由器对象
const r=express.Router()

//添加用户注册路由(接口)
//传参方式：post
//接口地址:http://127.0.0.1:1024/v1/users/reg
r.post('/reg',(req,res,next)=>{
    //获取post传递的参数
    console.log(req.body)
    var obj=req.body
    //用正则表达式验证手机格式错误
    if(!/^1[3-9]\d{9}$/.test(obj.uphone)){
        res.send({code:401,msg:'手机号码格式错误'})
        return
    }
    //执行SQL命令
    pool.query('insert into user set ?',[obj],(err,r)=>{
        if(err){
            next(err)
            return
        }
        console.log(r)
        res.send({code:200,msg:'注册成功'})
    })
})

//添加用户查询接口  
//接口地址：http://127.0.0.1:1024/v1/users/inquiry/:uid
r.get('/inquiry/:uid',(req,res,next)=>{
    //获取get传递的参数
    console.log(req.query)
    //把获取的参数赋值给变量
    var obj=req.query
    //执行SQL命令
    pool.query('select * from user where uid=?',[obj.uid],(err,r)=>{
        if(err){
            next(err)
            return
        }
        console.log(r)
        //判断是否查询成功
        if(r.length===0){
            res.send({code:501,msg:'查找失败'})
        }else{
            res.send({code:200,msg:'查找成功'})
        }
    })
})



//添加用户删除接口
//接口地址:http://127.0.0.1:1024/v1/users/delete/
r.delete('/delete/:uid',(req,res,next)=>{
    //获取delete传递的值
    console.log(req.params)
    //执行SQl命令
    pool.query('delete from user where uid=?',[req.params.uid],(err,r)=>{
        if(err){
            //如果有错误，交给下一个错误处理中间件
            next(err)
            //阻止往后执行
            return
        }
        //代表执行SQL命令成功，并不能说明成功删除
        console.log(r)
        //判断是否删除成功
        if(r.affectedRows===0){
            res.send({code:401,msg:"删除失败"})
        }else{
            res.send({code:200,msg:"删除成功"})
        }
    })
})
//添加用户名是否可用接口
//接口地址:http://127.0.0.1:1024/v1/users/uname
r.get('/uname/:uname',(req,res,next)=>{
    //获取get传递的参数
    console.log(req.params)
    //执行sql命令
    pool.query('select * from user where user_name=?',[req.params.uname],(err,r)=>{
        if(err){
            next(err)
            return
        }
        console.log(r)
        //判断是否可用
        if(r.length===0){
            res.send({code:200,msg:"用户名可用"})
        }else{
            res.send({code:401,msg:"用户名以被注册"})
        }
    })
})
/*
//添加邮箱是否可用接口
//接口地址:http://127.0.0.1:1024/v1/users/email
r.get('/email/:email',(req,res)=>{
    //获取get传递的参数
    console.log(req.params)
    //验证邮箱格式是否正确
    if(!/^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/){
        res.send({code:401,msg:"邮箱格式不正确"})
    }
    //执行sql命令
    pool.query('select * from user where email=?',[req.params.email],(err,r)=>{
        if(err){
            next(err)
            return 
        }
        console.log(r)
        //判断邮箱是否可用
        if(r.length===0){
            res.send({code:200,msg:"该邮箱可用"})
        }res.send({code:500,msg:"该邮箱以被注册"})
    })
})
*/

//检测手机号是否可用接口
//接口地址：http://127.0.0.1:1024/v1/users/phone
r.get('/phone/:phone',(req,res,next)=>{
    //获取get传递的参数
    console.log(req.params)
    //检测手机号码格式是否正确
    if(!/^1[3-9]\d{9}$/.test(req.params.phone)){
        res.send({code:401,msg:'手机号码格式错误'})
        return
    }
    //执行sql命令
    pool.query('select * from user where uphone=?',[req.params.phone],(err,r)=>{
        if(err){
                next(err)
                return
        }
        console.log(r)
        //判断手机号码是否可用
        if(r.length===0){
            res.send({code:200,msg:"手机号码可用"})
        }else{
            res.send({code:501,msg:"手机号码已被注册"})
        }
    })
})




//添加修改用户资料接口
//接口地址:http://127.0.0.1:1024/v1/users/list
r.put('/list',(req,res,next)=>{
    //获取put传递的参数
    console.log(req.body)
    //把获取的值赋值给一个变量
    var obj=req.body
    //执行sql命令
    pool.query('update user set ? where uid=?',[obj,obj.uid],(err,r)=>{
            if(err){
                next(err)
                return 
            }
            console.log(r)
            //判断是否修改成功
            if(r.affectedRows===1){
                res.send({code:200,msg:"修改成功"})
            }else{
                res.send({code:500,msg:"修改失败"})
            }
    })
})

//将路由暴露出去
module.exports=r